<?php
ini_set( 'max_execution_time', 0 );

//IRC服务器https://www.mirc.com/servers.html
//Autoload bootstrap
set_include_path( implode( PATH_SEPARATOR, array(
    __DIR__.'/library',
    __DIR__.'/plugins',
    get_include_path()
) ) );

spl_autoload_register( function( $class ) {
    $path = str_replace( '\\', '/', $class ).'.php';
    include $path;
    return class_exists( $class, false );
});
global $_db;
 $_db= new Db\SQLite(dirname(dirname(__FILE__)).'/images/diugou_core.db');

include_once("./library/Common.php");

//$aa=get_block("A2");var_dump($aa);exit;



//The real thing.
$bot = new Irc\Bot( 'diugou_2', 'irc.dal.net');

    //当我们开始联系的时候
$bot->on( 'connecting', function() { 

        echo "Connecting...\n"; 
    } )

    //当我们成功连接时（但尚未发送登录名！）
    ->on( 'connected', function() { 
        echo "Connected!\n"; 
    } )

    //当我们发送信息时
    ->on( 'send', function( $e ) { 

        //echo "Sending $e->message\n"; 
    } )

    //当我们收到消息时
    ->on( 'message', function( $e ) { 

        //echo "Received $e->message\n"; 
    } )

    //当我们通过身份验证，服务器欢迎我们的时候
    ->on( 'welcome', function( $e, $bot ) {

        //我们列出所有频道。这将触发“list”事件
        //$bot->listChannels();
		$bot->join("#diugou_vod");
		//$bot->chat( $e->channel, get_w() );
		
    } )

    //这将为“list”事件触发一次
    ->once( 'list', function( $e, $bot ) {

        //一旦“列表”事件被触发，加入所有已列出的频道
        //$bot->join( array_keys( $e->list ) );
		//$bot->join("#diugou_vod");
    } )

    //当我们加入一个频道
    ->on( 'join:#diugou_vod', function( $e, $bot ) {
		$bot->chat( $e->channel, get_w());
    } )

    //有“名称”请求时（检索频道用户信息）
    ->on( 'names', function( $e, $bot ) { } )

    //当有人在某个频道写作时
    ->on( 'chat', function( $e, $bot ) { 
		//$bot->chat( $e->channel, get_w());
		//大概思路 解析消息类型（最大的块ID，版本号），比对最大块id大小,
		
		//解析消息类型
		//1,W.key*2_密文  当加入网络后发生的消息
		//2,U.key*2_密文  发出来的同步数据
		//3,A.key*2  用户请求的需要同步的块ID,当接受到这个消息，如果本地有这个块则需要发布出来。
		$frist=get_msg_type($e->text);
		if($frist=="W"){
			
		}elseif($frist=="U"){
			set_block($e->text);
		}elseif($frist=="A"){
			
			$block=get_block($e->text);
			if($block){
				$bot->chat( $e->channel,$block);
			}
		}
        //echo "CHAT($e->channel): $e->from: $e->text\n"; 
    } )

    //当有人给我们写信的时候
    ->on( 'pm', function( $e, $bot ) { 

        echo "PM($e->to): $e->from: $e->text\n"; 
    } )

    //当有人写通知的时候
    ->on( 'notice', function( $e, $bot ) { 

        echo "NOTICE($e->to): $e->from: $e->text\n"; 
    } )

    //当我们检索到服务器选项时
    ->on( 'options', function( $e, $bot ) { 

        //echo "Received server options.\n"; 
    } )


    //现在终于把它连接起来了。
    ->connect();